同時処理が安全な修飾子
このセクションのすべてのメンバー関数は、コンテナーをトラバースしながら、同時にルックアップ・メソッドを実行できます。
要素の配置
template <typename...Args> std::pair<iterator, bool> emplace( Args&&... args );
argsからインプレースで構築された要素をコンテナーに挿入しようとします。戻り値:
std::pair<iterator, bool>のiteratorは、挿入された要素、または等しいキーを持つ既存の要素を指します。挿入が行われた場合、ブール値はtrueそれ以外はfalseです。要件:
value_typeタイプは、[container.requirements] ISO C++ 標準のEmplaceConstructible要件を満たしている必要があります。
template <typename...Args> iterator emplace_hint( const_iterator hint, Args&&... args );
argsからインプレースで構築された要素をコンテナーに挿入しようとします。オプションで、ノードを配置する場所の候補として
hintパラメーターを指定できます。戻り値: 挿入された要素、または同じキーを持つ既存の要素への
iteratorを返します。要件:
value_typeタイプは、[container.requirements] ISO C++ 標準のEmplaceConstructible要件を満たしている必要があります。
値を挿入
std::pair<iterator, bool> insert( const value_type& value );コンテナーに
valueの挿入を試みます。戻り値:
std::pair<iterator, bool>のiteratorは、挿入された要素、または等しいキーを持つ既存の要素を指します。挿入が行われた場合、ブール値はtrueそれ以外はfalseです。要件:
value_typeタイプは、[container.requirements] ISO C++ 標準のCopyInsertable要件を満たしている必要があります。
iterator insert( const_iterator hint, const value_type& value );コンテナーに
valueの挿入を試みます。オプションで、要素を配置する場所の候補として
hintパラメーターを指定できます。戻り値: 挿入された要素、または同じキーを持つ既存の要素への
iteratorを返します。要件:
value_typeタイプは、[container.requirements] ISO C++ 標準のCopyInsertable要件を満たしている必要があります。
template <typename P> std::pair<iterator, bool> insert( P&& value );
emplace(std::forward<P>(value))と等価です。このオーバーロードは、
std::is_constructible<value_type, P&&>::valueがtrueの場合にのみオーバーロードの解決に参加します。
template <typename P> iterator insert( const_iterator hint, P&& value );
emplace_hint(hint, std::forward<P>(value))と等価です。このオーバーロードは、
std::is_constructible<value_type, P&&>::valueがtrueの場合にのみオーバーロードの解決に参加します。
std::pair<iterator, bool> insert( value_type&& value );ムーブ・セマンティクスを使用して、コンテナーに
valueの挿入を試みます。
valueは有効のままですが、未指定の状態となります。戻り値:
std::pair<iterator, bool>のiteratorは、挿入された要素、または等しいキーを持つ既存の要素を指します。挿入が行われた場合、ブール値はtrueそれ以外はfalseです。要件:
value_typeタイプは、[container.requirements] ISO C++ 標準のMoveInsertable要件を満たしている必要があります。
iterator insert( const_iterator hint, value_type&& other );ムーブ・セマンティクスを使用して、コンテナーに
valueの挿入を試みます。オプションで、要素を配置する場所の候補として
hintパラメーターを指定できます。
valueは有効のままですが、未指定の状態となります。戻り値: 挿入された要素、または同じキーを持つ既存の要素への
iteratorを返します。要件:
value_typeタイプは、[container.requirements] ISO C++ 標準のMoveInsertable要件を満たしている必要があります。
要素のシーケンスを挿入
template <typename InputIterator> void insert( InputIterator first, InputIterator last );半開区間l
[first, last)からすべての項目をコンテナーに挿入しようとします。半開区間
[first, last)に同じキーを持つ複数の要素が含まれている場合、どの要素が挿入されるかは未指定です。要件:
InputIteratorタイプは、[input.iterators]ISO C++ 標準の InputIterator 要件を満たしている必要があります。
void insert( std::initializer_list<value_type> init );
insert(init.begin(), init.end())と等価です。
ノードを挿入
std::pair<iterator, bool> insert( node_type&& nh );ノードハンドル
nhが空の場合は何も行いません。それ以外は、
nhが所有するノードをコンテナーに挿入することを試みます。挿入に失敗すると、ノードハンドル
nhはノードの所有権を維持します。それ以外は、
nhは空の状態になります。
value_typeのコンストラクターのコピーおよび移動は行われません。
nhが空ではなく、get_allocator() != nh.get_allocator()である場合の動作は未定義です。戻り値:
std::pair<iterator, bool>のiteratorは、挿入された要素、またはnh.key()と同等の既存の要素を指します。挿入が行われた場合、ブール値はtrueそれ以外はfalseです。
iterator insert( const_iterator hint, node_type&& nh );ノードハンドル
nhが空の場合は何も行いません。それ以外は、
nhが所有するノードをコンテナーに挿入することを試みます。オプションで、ノードを配置する場所の候補として
hintパラメーターを指定できます。挿入に失敗すると、ノードハンドル
nhはノードの所有権を維持します。それ以外は、
nhは空の状態になります。
value_typeのコンストラクターのコピーおよび移動は行われません。
nhが空ではなく、get_allocator() != nh.get_allocator()である場合の動作は未定義です。戻り値: 挿入された要素、または
nh.key()に等しい既存の要素への iterator を返します。。
コンテナーをマージ
template <typename SrcHash, typename SrcKeyEqual> void merge( concurrent_unordered_map<Key, T, SrcHash, SrcKeyEqual, Allocator>& source ); template <typename SrcHash, typename SrcKeyEqual> void merge( concurrent_unordered_map<Key, T, SrcHash, SrcKeyEqual, Allocator>&& source ); template <typename SrcHash, typename SrcKeyEqual> void merge( concurrent_unordered_multimap<Key, T, SrcHash, SrcKeyEqual, Allocator>& source ); template <typename SrcHash, typename SrcKeyEqual> void merge( concurrent_unordered_multimap<Key, T, SrcHash, SrcKeyEqual, Allocator>&& source );コンテナーにキーが存在しない要素を
sourceから転送します。等しいキーを持つ複数の要素が含まれているコンテナーとマージする場合、どの要素が転送されるかは未指定です。
value_typeのコンストラクターのコピーおよび移動は行われません。
get_allocator() != source.get_allocator()である場合、動作は未定義です。
